{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "6b5297bf",
   "metadata": {},
   "source": [
    "### 数据来源\n",
    "\n",
    "\n",
    "解释下，数据最初是我从网上下载的，来源网站找不到了。\n",
    "\n",
    "不过搜了下，kaggle有这个地址，如果需要来源的话，看这个URL：\n",
    "\n",
    "https://www.kaggle.com/code/cagkanbay/car-price-prediction/data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "1f5c857f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5d11fe88",
   "metadata": {},
   "source": [
    "### 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "d46fc972",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_csv(\"./car_price.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "863f86fb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>year</th>\n",
       "      <th>selling_price</th>\n",
       "      <th>km_driven</th>\n",
       "      <th>fuel</th>\n",
       "      <th>seller_type</th>\n",
       "      <th>transmission</th>\n",
       "      <th>owner</th>\n",
       "      <th>mileage</th>\n",
       "      <th>engine</th>\n",
       "      <th>max_power</th>\n",
       "      <th>torque</th>\n",
       "      <th>seats</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Maruti Swift Dzire VDI</td>\n",
       "      <td>2014</td>\n",
       "      <td>450000</td>\n",
       "      <td>145500</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>23.4 kmpl</td>\n",
       "      <td>1248 CC</td>\n",
       "      <td>74 bhp</td>\n",
       "      <td>190Nm@ 2000rpm</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Skoda Rapid 1.5 TDI Ambition</td>\n",
       "      <td>2014</td>\n",
       "      <td>370000</td>\n",
       "      <td>120000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Second Owner</td>\n",
       "      <td>21.14 kmpl</td>\n",
       "      <td>1498 CC</td>\n",
       "      <td>103.52 bhp</td>\n",
       "      <td>250Nm@ 1500-2500rpm</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Honda City 2017-2020 EXi</td>\n",
       "      <td>2006</td>\n",
       "      <td>158000</td>\n",
       "      <td>140000</td>\n",
       "      <td>Petrol</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Third Owner</td>\n",
       "      <td>17.7 kmpl</td>\n",
       "      <td>1497 CC</td>\n",
       "      <td>78 bhp</td>\n",
       "      <td>12.7@ 2,700(kgm@ rpm)</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                           name  year  selling_price  km_driven    fuel  \\\n",
       "0        Maruti Swift Dzire VDI  2014         450000     145500  Diesel   \n",
       "1  Skoda Rapid 1.5 TDI Ambition  2014         370000     120000  Diesel   \n",
       "2      Honda City 2017-2020 EXi  2006         158000     140000  Petrol   \n",
       "\n",
       "  seller_type transmission         owner     mileage   engine   max_power  \\\n",
       "0  Individual       Manual   First Owner   23.4 kmpl  1248 CC      74 bhp   \n",
       "1  Individual       Manual  Second Owner  21.14 kmpl  1498 CC  103.52 bhp   \n",
       "2  Individual       Manual   Third Owner   17.7 kmpl  1497 CC      78 bhp   \n",
       "\n",
       "                  torque  seats  \n",
       "0         190Nm@ 2000rpm    5.0  \n",
       "1    250Nm@ 1500-2500rpm    5.0  \n",
       "2  12.7@ 2,700(kgm@ rpm)    5.0  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "7438226d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 8128 entries, 0 to 8127\n",
      "Data columns (total 13 columns):\n",
      " #   Column         Non-Null Count  Dtype  \n",
      "---  ------         --------------  -----  \n",
      " 0   name           8128 non-null   object \n",
      " 1   year           8128 non-null   int64  \n",
      " 2   selling_price  8128 non-null   int64  \n",
      " 3   km_driven      8128 non-null   int64  \n",
      " 4   fuel           8128 non-null   object \n",
      " 5   seller_type    8128 non-null   object \n",
      " 6   transmission   8128 non-null   object \n",
      " 7   owner          8128 non-null   object \n",
      " 8   mileage        7907 non-null   object \n",
      " 9   engine         7907 non-null   object \n",
      " 10  max_power      7913 non-null   object \n",
      " 11  torque         7906 non-null   object \n",
      " 12  seats          7907 non-null   float64\n",
      "dtypes: float64(1), int64(3), object(9)\n",
      "memory usage: 825.6+ KB\n"
     ]
    }
   ],
   "source": [
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a326717f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "name               0\n",
       "year               0\n",
       "selling_price      0\n",
       "km_driven          0\n",
       "fuel               0\n",
       "seller_type        0\n",
       "transmission       0\n",
       "owner              0\n",
       "mileage          221\n",
       "engine           221\n",
       "max_power        215\n",
       "torque           222\n",
       "seats            221\n",
       "dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "edf04483",
   "metadata": {},
   "outputs": [],
   "source": [
    "df.dropna(inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "709b5844",
   "metadata": {},
   "source": [
    "### 数据的清晰处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "60c2d02d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>year</th>\n",
       "      <th>selling_price</th>\n",
       "      <th>km_driven</th>\n",
       "      <th>fuel</th>\n",
       "      <th>seller_type</th>\n",
       "      <th>transmission</th>\n",
       "      <th>owner</th>\n",
       "      <th>mileage</th>\n",
       "      <th>engine</th>\n",
       "      <th>max_power</th>\n",
       "      <th>torque</th>\n",
       "      <th>seats</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Maruti Swift Dzire VDI</td>\n",
       "      <td>2014</td>\n",
       "      <td>450000</td>\n",
       "      <td>145500</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>23.4 kmpl</td>\n",
       "      <td>1248 CC</td>\n",
       "      <td>74 bhp</td>\n",
       "      <td>190Nm@ 2000rpm</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Skoda Rapid 1.5 TDI Ambition</td>\n",
       "      <td>2014</td>\n",
       "      <td>370000</td>\n",
       "      <td>120000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Second Owner</td>\n",
       "      <td>21.14 kmpl</td>\n",
       "      <td>1498 CC</td>\n",
       "      <td>103.52 bhp</td>\n",
       "      <td>250Nm@ 1500-2500rpm</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Honda City 2017-2020 EXi</td>\n",
       "      <td>2006</td>\n",
       "      <td>158000</td>\n",
       "      <td>140000</td>\n",
       "      <td>Petrol</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Third Owner</td>\n",
       "      <td>17.7 kmpl</td>\n",
       "      <td>1497 CC</td>\n",
       "      <td>78 bhp</td>\n",
       "      <td>12.7@ 2,700(kgm@ rpm)</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Hyundai i20 Sportz Diesel</td>\n",
       "      <td>2010</td>\n",
       "      <td>225000</td>\n",
       "      <td>127000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>23.0 kmpl</td>\n",
       "      <td>1396 CC</td>\n",
       "      <td>90 bhp</td>\n",
       "      <td>22.4 kgm at 1750-2750rpm</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Maruti Swift VXI BSIII</td>\n",
       "      <td>2007</td>\n",
       "      <td>130000</td>\n",
       "      <td>120000</td>\n",
       "      <td>Petrol</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>16.1 kmpl</td>\n",
       "      <td>1298 CC</td>\n",
       "      <td>88.2 bhp</td>\n",
       "      <td>11.5@ 4,500(kgm@ rpm)</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                           name  year  selling_price  km_driven    fuel  \\\n",
       "0        Maruti Swift Dzire VDI  2014         450000     145500  Diesel   \n",
       "1  Skoda Rapid 1.5 TDI Ambition  2014         370000     120000  Diesel   \n",
       "2      Honda City 2017-2020 EXi  2006         158000     140000  Petrol   \n",
       "3     Hyundai i20 Sportz Diesel  2010         225000     127000  Diesel   \n",
       "4        Maruti Swift VXI BSIII  2007         130000     120000  Petrol   \n",
       "\n",
       "  seller_type transmission         owner     mileage   engine   max_power  \\\n",
       "0  Individual       Manual   First Owner   23.4 kmpl  1248 CC      74 bhp   \n",
       "1  Individual       Manual  Second Owner  21.14 kmpl  1498 CC  103.52 bhp   \n",
       "2  Individual       Manual   Third Owner   17.7 kmpl  1497 CC      78 bhp   \n",
       "3  Individual       Manual   First Owner   23.0 kmpl  1396 CC      90 bhp   \n",
       "4  Individual       Manual   First Owner   16.1 kmpl  1298 CC    88.2 bhp   \n",
       "\n",
       "                     torque  seats  \n",
       "0            190Nm@ 2000rpm    5.0  \n",
       "1       250Nm@ 1500-2500rpm    5.0  \n",
       "2     12.7@ 2,700(kgm@ rpm)    5.0  \n",
       "3  22.4 kgm at 1750-2750rpm    5.0  \n",
       "4     11.5@ 4,500(kgm@ rpm)    5.0  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "263927ce",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    23.40\n",
       "1    21.14\n",
       "2    17.70\n",
       "Name: mileage, dtype: float64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"mileage\"] = df[\"mileage\"].map(lambda x : float(x.split(\" \")[0]))\n",
    "df[\"mileage\"].head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "95a32e94",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    1248.0\n",
       "1    1498.0\n",
       "2    1497.0\n",
       "Name: engine, dtype: float64"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"engine\"] = df[\"engine\"].map(lambda x : float(x.split(\" \")[0]))\n",
    "df[\"engine\"].head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "35f08e5f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     74.00\n",
       "1    103.52\n",
       "2     78.00\n",
       "Name: max_power, dtype: float64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"max_power\"] = df[\"max_power\"].map(lambda x : float(x.split(\" \")[0]))\n",
    "df[\"max_power\"].head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "084ae8e6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    2000.0\n",
       "1    2500.0\n",
       "2    2700.0\n",
       "Name: torque, dtype: float64"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 12.7@ 2,700(kgm@ rpm)\t\n",
    "\n",
    "import re\n",
    "\n",
    "def parse_rpm(torque):\n",
    "    torque = torque.replace(\",\", \"\")\n",
    "    return max([float(x) for x in re.findall(\"\\d+\", torque)])\n",
    "\n",
    "df[\"torque\"] = df[\"torque\"].map(parse_rpm)\n",
    "df[\"torque\"].head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "77522c5d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 7906 entries, 0 to 8127\n",
      "Data columns (total 13 columns):\n",
      " #   Column         Non-Null Count  Dtype  \n",
      "---  ------         --------------  -----  \n",
      " 0   name           7906 non-null   object \n",
      " 1   year           7906 non-null   int64  \n",
      " 2   selling_price  7906 non-null   int64  \n",
      " 3   km_driven      7906 non-null   int64  \n",
      " 4   fuel           7906 non-null   object \n",
      " 5   seller_type    7906 non-null   object \n",
      " 6   transmission   7906 non-null   object \n",
      " 7   owner          7906 non-null   object \n",
      " 8   mileage        7906 non-null   float64\n",
      " 9   engine         7906 non-null   float64\n",
      " 10  max_power      7906 non-null   float64\n",
      " 11  torque         7906 non-null   float64\n",
      " 12  seats          7906 non-null   float64\n",
      "dtypes: float64(5), int64(3), object(5)\n",
      "memory usage: 864.7+ KB\n"
     ]
    }
   ],
   "source": [
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "9167e4a0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>year</th>\n",
       "      <th>selling_price</th>\n",
       "      <th>km_driven</th>\n",
       "      <th>fuel</th>\n",
       "      <th>seller_type</th>\n",
       "      <th>transmission</th>\n",
       "      <th>owner</th>\n",
       "      <th>mileage</th>\n",
       "      <th>engine</th>\n",
       "      <th>max_power</th>\n",
       "      <th>torque</th>\n",
       "      <th>seats</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Maruti Swift Dzire VDI</td>\n",
       "      <td>2014</td>\n",
       "      <td>450000</td>\n",
       "      <td>145500</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>23.40</td>\n",
       "      <td>1248.0</td>\n",
       "      <td>74.00</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Skoda Rapid 1.5 TDI Ambition</td>\n",
       "      <td>2014</td>\n",
       "      <td>370000</td>\n",
       "      <td>120000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Second Owner</td>\n",
       "      <td>21.14</td>\n",
       "      <td>1498.0</td>\n",
       "      <td>103.52</td>\n",
       "      <td>2500.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Honda City 2017-2020 EXi</td>\n",
       "      <td>2006</td>\n",
       "      <td>158000</td>\n",
       "      <td>140000</td>\n",
       "      <td>Petrol</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Third Owner</td>\n",
       "      <td>17.70</td>\n",
       "      <td>1497.0</td>\n",
       "      <td>78.00</td>\n",
       "      <td>2700.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                           name  year  selling_price  km_driven    fuel  \\\n",
       "0        Maruti Swift Dzire VDI  2014         450000     145500  Diesel   \n",
       "1  Skoda Rapid 1.5 TDI Ambition  2014         370000     120000  Diesel   \n",
       "2      Honda City 2017-2020 EXi  2006         158000     140000  Petrol   \n",
       "\n",
       "  seller_type transmission         owner  mileage  engine  max_power  torque  \\\n",
       "0  Individual       Manual   First Owner    23.40  1248.0      74.00  2000.0   \n",
       "1  Individual       Manual  Second Owner    21.14  1498.0     103.52  2500.0   \n",
       "2  Individual       Manual   Third Owner    17.70  1497.0      78.00  2700.0   \n",
       "\n",
       "   seats  \n",
       "0    5.0  \n",
       "1    5.0  \n",
       "2    5.0  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bbf58289",
   "metadata": {},
   "source": [
    "### 数据的统计分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "66f99e97",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>year</th>\n",
       "      <th>selling_price</th>\n",
       "      <th>km_driven</th>\n",
       "      <th>fuel</th>\n",
       "      <th>seller_type</th>\n",
       "      <th>transmission</th>\n",
       "      <th>owner</th>\n",
       "      <th>mileage</th>\n",
       "      <th>engine</th>\n",
       "      <th>max_power</th>\n",
       "      <th>torque</th>\n",
       "      <th>seats</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2014</td>\n",
       "      <td>450000</td>\n",
       "      <td>145500</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>23.40</td>\n",
       "      <td>1248.0</td>\n",
       "      <td>74.00</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2014</td>\n",
       "      <td>370000</td>\n",
       "      <td>120000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Second Owner</td>\n",
       "      <td>21.14</td>\n",
       "      <td>1498.0</td>\n",
       "      <td>103.52</td>\n",
       "      <td>2500.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2006</td>\n",
       "      <td>158000</td>\n",
       "      <td>140000</td>\n",
       "      <td>Petrol</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Third Owner</td>\n",
       "      <td>17.70</td>\n",
       "      <td>1497.0</td>\n",
       "      <td>78.00</td>\n",
       "      <td>2700.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   year  selling_price  km_driven    fuel seller_type transmission  \\\n",
       "0  2014         450000     145500  Diesel  Individual       Manual   \n",
       "1  2014         370000     120000  Diesel  Individual       Manual   \n",
       "2  2006         158000     140000  Petrol  Individual       Manual   \n",
       "\n",
       "          owner  mileage  engine  max_power  torque  seats  \n",
       "0   First Owner    23.40  1248.0      74.00  2000.0    5.0  \n",
       "1  Second Owner    21.14  1498.0     103.52  2500.0    5.0  \n",
       "2   Third Owner    17.70  1497.0      78.00  2700.0    5.0  "
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.drop(columns=[\"name\"], inplace=True)\n",
    "df.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "044ec025",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>fuel</th>\n",
       "      <th>seller_type</th>\n",
       "      <th>transmission</th>\n",
       "      <th>owner</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>7906</td>\n",
       "      <td>7906</td>\n",
       "      <td>7906</td>\n",
       "      <td>7906</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>unique</th>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>top</th>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>freq</th>\n",
       "      <td>4299</td>\n",
       "      <td>6563</td>\n",
       "      <td>6865</td>\n",
       "      <td>5215</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          fuel seller_type transmission        owner\n",
       "count     7906        7906         7906         7906\n",
       "unique       4           3            2            5\n",
       "top     Diesel  Individual       Manual  First Owner\n",
       "freq      4299        6563         6865         5215"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.select_dtypes(include=[\"object\"]).describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "12a5dbf8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mileage</th>\n",
       "      <th>engine</th>\n",
       "      <th>max_power</th>\n",
       "      <th>torque</th>\n",
       "      <th>seats</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>7906.000000</td>\n",
       "      <td>7906.000000</td>\n",
       "      <td>7906.000000</td>\n",
       "      <td>7906.000000</td>\n",
       "      <td>7906.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>19.419861</td>\n",
       "      <td>1458.708829</td>\n",
       "      <td>91.587374</td>\n",
       "      <td>3069.864154</td>\n",
       "      <td>5.416393</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>4.036263</td>\n",
       "      <td>503.893057</td>\n",
       "      <td>35.747216</td>\n",
       "      <td>943.662100</td>\n",
       "      <td>0.959208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>624.000000</td>\n",
       "      <td>32.800000</td>\n",
       "      <td>400.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>16.780000</td>\n",
       "      <td>1197.000000</td>\n",
       "      <td>68.050000</td>\n",
       "      <td>2400.000000</td>\n",
       "      <td>5.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>19.300000</td>\n",
       "      <td>1248.000000</td>\n",
       "      <td>82.000000</td>\n",
       "      <td>3000.000000</td>\n",
       "      <td>5.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>22.320000</td>\n",
       "      <td>1582.000000</td>\n",
       "      <td>102.000000</td>\n",
       "      <td>4000.000000</td>\n",
       "      <td>5.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>42.000000</td>\n",
       "      <td>3604.000000</td>\n",
       "      <td>400.000000</td>\n",
       "      <td>21800.000000</td>\n",
       "      <td>14.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           mileage       engine    max_power        torque        seats\n",
       "count  7906.000000  7906.000000  7906.000000   7906.000000  7906.000000\n",
       "mean     19.419861  1458.708829    91.587374   3069.864154     5.416393\n",
       "std       4.036263   503.893057    35.747216    943.662100     0.959208\n",
       "min       0.000000   624.000000    32.800000    400.000000     2.000000\n",
       "25%      16.780000  1197.000000    68.050000   2400.000000     5.000000\n",
       "50%      19.300000  1248.000000    82.000000   3000.000000     5.000000\n",
       "75%      22.320000  1582.000000   102.000000   4000.000000     5.000000\n",
       "max      42.000000  3604.000000   400.000000  21800.000000    14.000000"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.select_dtypes(include=[\"float\"]).describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "84521168",
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "50559e85",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: seaborn in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (0.13.2)\n",
      "Requirement already satisfied: numpy!=1.24.0,>=1.20 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from seaborn) (1.26.4)\n",
      "Requirement already satisfied: pandas>=1.2 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from seaborn) (2.2.1)\n",
      "Requirement already satisfied: matplotlib!=3.6.1,>=3.4 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from seaborn) (3.8.3)\n",
      "Requirement already satisfied: contourpy>=1.0.1 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.2.0)\n",
      "Requirement already satisfied: cycler>=0.10 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (0.12.1)\n",
      "Requirement already satisfied: fonttools>=4.22.0 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (4.49.0)\n",
      "Requirement already satisfied: kiwisolver>=1.3.1 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.4.5)\n",
      "Requirement already satisfied: packaging>=20.0 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (23.2)\n",
      "Requirement already satisfied: pillow>=8 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (10.2.0)\n",
      "Requirement already satisfied: pyparsing>=2.3.1 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (3.1.1)\n",
      "Requirement already satisfied: python-dateutil>=2.7 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (2.8.2)\n",
      "Requirement already satisfied: importlib-resources>=3.2.0 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (6.1.1)\n",
      "Requirement already satisfied: pytz>=2020.1 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from pandas>=1.2->seaborn) (2024.1)\n",
      "Requirement already satisfied: tzdata>=2022.7 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from pandas>=1.2->seaborn) (2024.1)\n",
      "Requirement already satisfied: zipp>=3.1.0 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from importlib-resources>=3.2.0->matplotlib!=3.6.1,>=3.4->seaborn) (3.17.0)\n",
      "Requirement already satisfied: six>=1.5 in d:\\anaconda3\\envs\\mysklearn\\lib\\site-packages (from python-dateutil>=2.7->matplotlib!=3.6.1,>=3.4->seaborn) (1.16.0)\n"
     ]
    }
   ],
   "source": [
    "!pip install seaborn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "5f7bc0e1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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1agoW31j7a3NcnXGNf0FMa+FvXlTrs9DZGvrQb1ZV9nNTTKPrALS8r7bRPomct9t0uQ4ZB5xhXqbPtAcugjS5Hhku11CzoO3NyRSsbSCZt+3w6s02vQBAOQ8u42scztKqGX0tRNJv6Xb2wnghx9+gKWlJfbt2ydoHJvL9Rf09YXSu0X+9ZG/B37XC17hRNk1jv78H6jfsvSwW0KHIIicc9uEDkEQQ+cKtPymwHaM+bgVPZSN9vSSn8vznxOWfQV77W4RBwR7bUVRqkzzl0pLS8PmzZvRtm1bqKqq4uDBg7h8+bLcmstERERE9P1hp/kd/w2lWLJkCTIyMlClShUcP34cjo6OQodGRERE9Ekk38ENXEoSO83v0NLSwuXLl4uuSERERETfFaVZco6IiIiISFGYaSYiIiJSQlzpoXgx00xEREREVARmmomIiIiUkLC3oVE+zDQTERERERWBnWYiIiIioiJweAYRERGREpJwmeZixUwzEREREVERmGkmIiIiUkISMNVcnJhpJiIiIiIqAjvNRERERERF4PAMIiIiIiXEOwIWL2aaiYiIiIiKwEwzERERkRLiknPFi5lmIiIiIqIiMNNMREREpIQkQgegZJhpJiIiIiIqAjvNRERERERF4PAMIiIiIiXEJeeKFzPNRERERERFYKaZiIiISAlxybnixUwzEREREVER2GkmIiIiIioCh2cQERERKSGu01y8mGkmIiIiIioCM81ERERESoiZ5uLFTDMRERERURGYaSYiIiJSQlIuOVesmGkmIiIiIioCO81EREREREXg8IxvRENRstAhCELcw0noEARx5fZzoUMQhL2xldAhCCLn3DahQxCEWocRQocgiNpzXYQOQRDua5KEDkEQTaYL99qcCFi8mGkmIiIiIioCO81ERERESkgi4PY5NmzYACsrK2hqaqJhw4Z4+PDhB+sfPXoUVatWhaamJuzt7XHu3LnPfOWPw04zEREREQnq8OHDcHZ2xrx58/DkyRPUrFkTbdu2RVRUVIH17969iz59+mDYsGF4+vQpunbtiq5du+L5c8UNb2SnmYiIiIgEtWrVKowYMQJDhgxBtWrVsHnzZmhra2Pnzp0F1l+7di3atWuHqVOnws7ODosWLUKdOnWwfv16hcXITjMRERGREpIKuGVmZiIpKUluy8zMLDDOrKwsPH78GI6OjrIy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UOgQBDG07hShQxDEvpcnBHttx3JtBXvty68uCPbaiqJ0Y5qJiIiIiIrb95nWISIiIlJyHExQvNhp/gStWrXiHyARERHRd4jDM4iIiIiIisBMMxEREZESknDJuWLFTDMRERERURGYaSYiIiJSQry5SfFippmIiIiIqAjsNBMRERERFYHDM4iIiIiUkITL5BYrZpqJiIiIiIrATDMRERGREmKeuXgx00xEREREVAR2momIiIiIisDhGURERERKiHcELF7MNBMRERERFYGZZiIiIiIlxExz8WKmmYiIiIioCMw0ExERESkhKW9uUqyYaSYiIiIiKgI7zUREREREReDwDCIiIiIlxImAxYuZZiIiIiKiIjDTTERERKSEpMw0FytmmomIiIiIisBOMxERERFRETg8g4iIiEgJcZ3m4sVMMxERERFREZhpJiIiIlJCXHKueDHTTERERERUBGaaiYiIiJQQxzQXL2aaiYiIiIiKwE4zEREREVERODzjGxHznb5TFbO/z9913VUlQocgiK4pL4QOQRDe0+oKHYIg3NckCR2CIIbWnSJ0CILY+Xil0CF8dzgRsHh9nz0SIiIiIqJP8J3mL4mIiIiUm5SZ5mLFTDMRERERURHYaSYiIiKib0JcXBz69esHfX19GBoaYtiwYUhJSfmofaVSKdq3bw+RSIRTp0598mtzeAYRERGREpIo4TrN/fr1Q3h4OC5duoTs7GwMGTIEv/zyCw4cOFDkvmvWrIFIJPrs12anmYiIiIi+et7e3jh//jwePXqEevXqAQD++OMPdOjQAStXrkTp0qUL3dfd3R2urq5wc3NDqVKlPuv1OTyDiIiISAlJBfwvMzMTSUlJcltmZuYXtefevXswNDSUdZgBwNHRESoqKnjw4EGh+6WlpaFv377YsGEDLC0tP/v12WkmIiIiomK1bNkyGBgYyG3Lli37omNGRETA3NxcrkxNTQ3GxsaIiIgodL9JkyahSZMm6NKlyxe9PodnEBERESkhIcc0z5w5E87OznJlYrG4wLozZszAb7/99sHjeXt7f1Ycf/31F65evYqnT59+1v7vYqeZiIiIiIqVWCwutJP8vsmTJ2Pw4MEfrGNjYwNLS0tERUXJlefk5CAuLq7QYRdXr15FQEAADA0N5cq7d++O5s2b4/r16x8VI8BOMxEREREJyMzMDGZmZkXWa9y4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",
      "text/plain": [
       "<Figure size 800x800 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,8))\n",
    "sns.heatmap(df.corr(numeric_only=True), annot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "92d57b3c",
   "metadata": {},
   "source": [
    "### 特征工程"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "725e32b7",
   "metadata": {},
   "source": [
    "#### 分类字段one-hot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "d116a101",
   "metadata": {},
   "outputs": [],
   "source": [
    "cat_columns = [\"fuel\", \"seller_type\", \"transmission\", \"owner\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "b2b90cd0",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import OneHotEncoder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "c3d51c18",
   "metadata": {},
   "outputs": [],
   "source": [
    "oneHotEncoder = OneHotEncoder(drop='first')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "9117e213",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1., 0., 0., ..., 0., 0., 0.],\n",
       "       [1., 0., 0., ..., 1., 0., 0.],\n",
       "       [0., 0., 1., ..., 0., 0., 1.],\n",
       "       ...,\n",
       "       [1., 0., 0., ..., 0., 0., 0.],\n",
       "       [1., 0., 0., ..., 0., 0., 0.],\n",
       "       [1., 0., 0., ..., 0., 0., 0.]])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cat_features = oneHotEncoder.fit_transform(df[cat_columns]).toarray()\n",
    "cat_features"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0e269936",
   "metadata": {},
   "source": [
    "#### 数值字段-标准化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "d86ef9d0",
   "metadata": {},
   "outputs": [],
   "source": [
    "num_columns = [\"mileage\", \"engine\", \"max_power\", \"torque\", \"seats\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "8b0e4aa3",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "d0e9b1e6",
   "metadata": {},
   "outputs": [],
   "source": [
    "standardScaler = StandardScaler()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "e6a43d7b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.98615741, -0.41818825, -0.49202393, -1.13380819, -0.4341278 ],\n",
       "       [ 0.42619816,  0.07798015,  0.33382687, -0.60392401, -0.4341278 ],\n",
       "       [-0.42612921,  0.07599548, -0.38012003, -0.39197033, -0.4341278 ],\n",
       "       ...,\n",
       "       [-0.02969788, -0.41818825, -0.49482153, -1.13380819, -0.4341278 ],\n",
       "       [ 1.02827824, -0.12445656, -0.60392784, -0.07403982, -0.4341278 ],\n",
       "       [ 1.02827824, -0.12445656, -0.60392784, -0.07403982, -0.4341278 ]])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "num_features = standardScaler.fit_transform(df[num_columns])\n",
    "num_features"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "abc41ff0",
   "metadata": {},
   "source": [
    "#### 构建X和Y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "d7fcca6b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.        ,  0.        ,  0.        , ..., -0.49202393,\n",
       "        -1.13380819, -0.4341278 ],\n",
       "       [ 1.        ,  0.        ,  0.        , ...,  0.33382687,\n",
       "        -0.60392401, -0.4341278 ],\n",
       "       [ 0.        ,  0.        ,  1.        , ..., -0.38012003,\n",
       "        -0.39197033, -0.4341278 ],\n",
       "       ...,\n",
       "       [ 1.        ,  0.        ,  0.        , ..., -0.49482153,\n",
       "        -1.13380819, -0.4341278 ],\n",
       "       [ 1.        ,  0.        ,  0.        , ..., -0.60392784,\n",
       "        -0.07403982, -0.4341278 ],\n",
       "       [ 1.        ,  0.        ,  0.        , ..., -0.60392784,\n",
       "        -0.07403982, -0.4341278 ]])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = np.hstack([cat_features, num_features])\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "95b07de4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([450000, 370000, 158000, ..., 382000, 290000, 290000], dtype=int64)"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = df[\"selling_price\"].to_numpy()\n",
    "y"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6296bf6b",
   "metadata": {},
   "source": [
    "### 模型训练"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cf0a3262",
   "metadata": {},
   "source": [
    "#### 数据集划分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "639c9f7b",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "5f729f45",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "8f6d9dc5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((6324, 15), (1582, 15), (6324,), (1582,))"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.shape, X_test.shape, y_train.shape, y_test.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b24937db",
   "metadata": {},
   "source": [
    "#### 随机森林"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "5fd19f46",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.ensemble import RandomForestRegressor\n",
    "from sklearn.metrics import accuracy_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "944bd517",
   "metadata": {},
   "outputs": [],
   "source": [
    "random_model = RandomForestRegressor(n_estimators=300, random_state=42, n_jobs=-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "022c81fd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestRegressor(n_estimators=300, n_jobs=-1, random_state=42)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;RandomForestRegressor<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.RandomForestRegressor.html\">?<span>Documentation for RandomForestRegressor</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestRegressor(n_estimators=300, n_jobs=-1, random_state=42)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "RandomForestRegressor(n_estimators=300, n_jobs=-1, random_state=42)"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "random_model.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "fae64ad8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 535563.32153893,  280114.29035566,  288268.39171939, ...,\n",
       "       2475000.        ,  712216.98819699, 3200000.        ])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred = random_model.predict(X_test)\n",
    "y_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "0c4b836e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9804930543103885"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "random_model.score(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "428931f6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9452043974078124"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "random_model.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e7f2f496",
   "metadata": {},
   "source": [
    "### 训练线性回归模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "e8091ecc",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "437ce49e",
   "metadata": {},
   "outputs": [],
   "source": [
    "lr_model = LinearRegression()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "91b46645",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-2 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-2 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-2 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-2 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-2 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-2 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;LinearRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.LinearRegression.html\">?<span>Documentation for LinearRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>LinearRegression()</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr_model.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "6c287960",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6776339435265324"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr_model.score(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "38e00b95",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6602667086468642"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr_model.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3ddbdd6c",
   "metadata": {},
   "source": [
    "### 存储模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "fb5fb058",
   "metadata": {},
   "outputs": [],
   "source": [
    "model_dir = \"./flask-carprice/models\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "4f2e9c86",
   "metadata": {},
   "outputs": [],
   "source": [
    "import joblib"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "3088763a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['./flask-carprice/models/random_model.joblib']"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "joblib.dump(random_model, f\"{model_dir}/random_model.joblib\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "ca86fb48",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['./flask-carprice/models/oneHotEncoder.joblib']"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "joblib.dump(oneHotEncoder, f\"{model_dir}/oneHotEncoder.joblib\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "5547fe2c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['./flask-carprice/models/standardScaler.joblib']"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "joblib.dump(standardScaler, f\"{model_dir}/standardScaler.joblib\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "781ba266",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'{\"year\":{\"4450\":2012},\"selling_price\":{\"4450\":220000},\"km_driven\":{\"4450\":60000},\"fuel\":{\"4450\":\"Petrol\"},\"seller_type\":{\"4450\":\"Individual\"},\"transmission\":{\"4450\":\"Manual\"},\"owner\":{\"4450\":\"Third Owner\"},\"mileage\":{\"4450\":18.9},\"engine\":{\"4450\":998.0},\"max_power\":{\"4450\":67.1},\"torque\":{\"4450\":3500.0},\"seats\":{\"4450\":5.0}}'"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sample(1).to_json()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "0171e588",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>year</th>\n",
       "      <th>selling_price</th>\n",
       "      <th>km_driven</th>\n",
       "      <th>fuel</th>\n",
       "      <th>seller_type</th>\n",
       "      <th>transmission</th>\n",
       "      <th>owner</th>\n",
       "      <th>mileage</th>\n",
       "      <th>engine</th>\n",
       "      <th>max_power</th>\n",
       "      <th>torque</th>\n",
       "      <th>seats</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2014</td>\n",
       "      <td>450000</td>\n",
       "      <td>145500</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>23.40</td>\n",
       "      <td>1248.0</td>\n",
       "      <td>74.00</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2014</td>\n",
       "      <td>370000</td>\n",
       "      <td>120000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Second Owner</td>\n",
       "      <td>21.14</td>\n",
       "      <td>1498.0</td>\n",
       "      <td>103.52</td>\n",
       "      <td>2500.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2006</td>\n",
       "      <td>158000</td>\n",
       "      <td>140000</td>\n",
       "      <td>Petrol</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Third Owner</td>\n",
       "      <td>17.70</td>\n",
       "      <td>1497.0</td>\n",
       "      <td>78.00</td>\n",
       "      <td>2700.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2010</td>\n",
       "      <td>225000</td>\n",
       "      <td>127000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>23.00</td>\n",
       "      <td>1396.0</td>\n",
       "      <td>90.00</td>\n",
       "      <td>2750.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2007</td>\n",
       "      <td>130000</td>\n",
       "      <td>120000</td>\n",
       "      <td>Petrol</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>16.10</td>\n",
       "      <td>1298.0</td>\n",
       "      <td>88.20</td>\n",
       "      <td>4500.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8123</th>\n",
       "      <td>2013</td>\n",
       "      <td>320000</td>\n",
       "      <td>110000</td>\n",
       "      <td>Petrol</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>18.50</td>\n",
       "      <td>1197.0</td>\n",
       "      <td>82.85</td>\n",
       "      <td>4000.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8124</th>\n",
       "      <td>2007</td>\n",
       "      <td>135000</td>\n",
       "      <td>119000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Fourth &amp; Above Owner</td>\n",
       "      <td>16.80</td>\n",
       "      <td>1493.0</td>\n",
       "      <td>110.00</td>\n",
       "      <td>2750.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8125</th>\n",
       "      <td>2009</td>\n",
       "      <td>382000</td>\n",
       "      <td>120000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>19.30</td>\n",
       "      <td>1248.0</td>\n",
       "      <td>73.90</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8126</th>\n",
       "      <td>2013</td>\n",
       "      <td>290000</td>\n",
       "      <td>25000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>23.57</td>\n",
       "      <td>1396.0</td>\n",
       "      <td>70.00</td>\n",
       "      <td>3000.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8127</th>\n",
       "      <td>2013</td>\n",
       "      <td>290000</td>\n",
       "      <td>25000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>23.57</td>\n",
       "      <td>1396.0</td>\n",
       "      <td>70.00</td>\n",
       "      <td>3000.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>7906 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      year  selling_price  km_driven    fuel seller_type transmission  \\\n",
       "0     2014         450000     145500  Diesel  Individual       Manual   \n",
       "1     2014         370000     120000  Diesel  Individual       Manual   \n",
       "2     2006         158000     140000  Petrol  Individual       Manual   \n",
       "3     2010         225000     127000  Diesel  Individual       Manual   \n",
       "4     2007         130000     120000  Petrol  Individual       Manual   \n",
       "...    ...            ...        ...     ...         ...          ...   \n",
       "8123  2013         320000     110000  Petrol  Individual       Manual   \n",
       "8124  2007         135000     119000  Diesel  Individual       Manual   \n",
       "8125  2009         382000     120000  Diesel  Individual       Manual   \n",
       "8126  2013         290000      25000  Diesel  Individual       Manual   \n",
       "8127  2013         290000      25000  Diesel  Individual       Manual   \n",
       "\n",
       "                     owner  mileage  engine  max_power  torque  seats  \n",
       "0              First Owner    23.40  1248.0      74.00  2000.0    5.0  \n",
       "1             Second Owner    21.14  1498.0     103.52  2500.0    5.0  \n",
       "2              Third Owner    17.70  1497.0      78.00  2700.0    5.0  \n",
       "3              First Owner    23.00  1396.0      90.00  2750.0    5.0  \n",
       "4              First Owner    16.10  1298.0      88.20  4500.0    5.0  \n",
       "...                    ...      ...     ...        ...     ...    ...  \n",
       "8123           First Owner    18.50  1197.0      82.85  4000.0    5.0  \n",
       "8124  Fourth & Above Owner    16.80  1493.0     110.00  2750.0    5.0  \n",
       "8125           First Owner    19.30  1248.0      73.90  2000.0    5.0  \n",
       "8126           First Owner    23.57  1396.0      70.00  3000.0    5.0  \n",
       "8127           First Owner    23.57  1396.0      70.00  3000.0    5.0  \n",
       "\n",
       "[7906 rows x 12 columns]"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "562d052d",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
